package com.ftg.learn.chapter8.treee;

import lombok.Data;

/**
 * 我的树
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/8/10 下午3:44
 */
public class MyTree {

    //根节点
    private Node root;


    /**
     * @param val
     * @param type left right null
     */
    public boolean add(int val, String type) {
        Node temp = new Node(val);

        if (this.root == null) {
            this.root = temp;
            return true;
        }

        switch (type) {
            case "left":
                this.root.setLeft(temp);
                return true;
            default:
                this.root.setRight(temp);
        }
        return true;
    }

    public Node add(int x) {
        if (this.root == null) {
            Node t = new Node(x);
            this.root = t;
            return t;
        }
        return this.add(root, x);
    }

    /**
     * 思路写一下
     * :  左子树 《 根  《  右子树
     */
    private Node add(Node root, int x) {
        Node t1 = new Node(x);

        if (root.getVal() > x) {
            //左子树
            //结束条件
            if (root.getLeft() == null) {
                root.setLeft(t1);
                return t1;
            }
            add(root.getLeft(), x);
        }else{
            //右子树
            if (root.getRight() == null) {
                root.setRight(t1);
                return t1;
            }
            add(root.getRight(), x);
        }
        return null;
    }


    //一段信息  多个属性  多个方法 整体


    public static void main(String[] args) {
        MyTree m = new MyTree();
        m.add(23);
        m.add(45);
        m.add(21);
        m.add(2);
        m.add(67);
        //递归 :

    }

}
